home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO001.dsk / FIN / OPTION.PRICING.bas < prev    next >
BASIC Source File  |  2012-02-16  |  4KB  |  114 lines

  1. 1  REM  WRITTEN BY ERIC ROSENFELD
  2. 2  REM     70 LANCASTER RD.
  3. 3  REM     ARLINGTON,MA  02174
  4. 50  DIM STK(5),TIME(2),P(5,2),HEDGE(5,2)
  5. 51  DIM R(250)
  6. 100  CALL  -936
  7. 110  VTAB 10: HTAB 15: PRINT "BLACK-SCHOLES"
  8. 120  VTAB 12: HTAB 11: PRINT "OPTION PRICING MODEL"
  9. 121  FOR I = 1 TO 1500: NEXT I
  10. 122  CALL  -936
  11. 123  PRINT "THE INPUTS TO THE BLACK-SCHOLES FORMULA ARE: "
  12. 124  PRINT : PRINT "1. EXERCISE PRICE"
  13. 125  PRINT : PRINT "2. CURRENT STOCK PRICE (MUST BE GREATER THAN 4)"
  14. 126  PRINT : PRINT "3. CURRENT ANNUAL INTEREST RATE         CONTINOUSLY COMPOUNDED (I.E. .065 EQUALS 6.5% PER YEAR)"
  15. 127  PRINT : PRINT "4. TIME TO MATURITY IN YEARS (I.E. .25  MEANS THERE ARE THREE MONTHS LEFT BEFORE THE OPTION EXPIRES)"
  16. 128  PRINT : PRINT "5. ANNUALIZED STANDARD DEVIATION OF THE STOCK'S RETURN CONTINOUSLY COMPOUNED    (STD. DEV. OF THE LOGARITHM OF THE STOCK RETURN SERIES)
  17. 129  PRINT : PRINT "DO YOU WISH TO ESTIMATE THE STD. DEV.   FROM STOCK PRICE DATA...(ENTER Y OR N):"
  18. 130  VTAB 23: HTAB 40: GET A$
  19. 131  IF A$ = "Y"  THEN  GOSUB 8000
  20. 132  PRINT : PRINT : PRINT 
  21. 159  PRINT "ENTER EXERCISE PRICE: ": INPUT E
  22. 160  PRINT "ENTER CURRENT STOCK PRICE:": INPUT STK(3)
  23. 170  PRINT "ENTER CURRENT ANNUAL INTEREST RATE: ": INPUT R
  24. 180  PRINT "ENTER TIME TO MATURITY FOR 1ST OPTION:": INPUT TIME(1)
  25. 190  PRINT "ENTER TIME TO MATURITY FOR 2ND OPTION: ": INPUT TIME(2)
  26. 200  PRINT "ENTER STANDARD DEVIATION OF THE LOGARITM OF THE STOCK RETURN SERIES: ": INPUT STD
  27. 210 VAR = STD ^2
  28. 1000  FOR I = 1 TO 5:STK(I) = STK(3) +2 *(I -3): NEXT I
  29. 1010  FOR I = 1 TO 5: FOR J = 1 TO 2
  30. 1020 S = STK(I)
  31. 1030 T = TIME(J)
  32. 1040  GOSUB 4000:P(I,J) = OPT:HEDGE(I,J) = H
  33. 1050  NEXT J: NEXT I
  34. 1100  REM  PRINT OUTPUT
  35. 1110  CALL  -936: PRINT 
  36. 1120  PRINT "           EXERCISE PRICE= ";E
  37. 1130  PRINT "           R= ";R;"   STD DEV= ";STD
  38. 1140  PRINT 
  39. 1150  PRINT "              TIME TO MATURITY"
  40. 1160  PRINT "STOCK PRICE",TIME(1),TIME(2)
  41. 1170  PRINT 
  42. 1180  FOR I = 1 TO 5
  43. 1190  PRINT STK(I);"       ";P(I,1);"     ";P(I,2)
  44. 1200  PRINT "         ";HEDGE(I,1);"      ";HEDGE(I,2)
  45. 1210  PRINT 
  46. 1220  NEXT I
  47. 1250  PRINT "DO YOU WISH TO CHANGE ANY INPUTS...     (ENTER Y OR N):"
  48. 1260  VTAB 23: HTAB 17: GET A$
  49. 1270  IF A$ = "N"  THEN  END 
  50. 1280  CALL  -936
  51. 1290  PRINT "CURRENT INPUT VALUES:"
  52. 1300  PRINT : PRINT "1. EXERCISE PRICE= ";E
  53. 1310  PRINT : PRINT "2. STOCK PRICE= ";STK(3)
  54. 1315  PRINT : PRINT "3. TIME TO MATURITY 1= ";TIME(1)
  55. 1320  PRINT : PRINT "4. TIME TO MATURITY 2= ";TIME(2)
  56. 1330  PRINT : PRINT "5. STD. DEV.= ";STD
  57. 1345  PRINT : PRINT "6. INTEREST RATE= ";R
  58. 1347  PRINT : PRINT : PRINT "ENTER THE NUMBER (1-6) OF THE INPUT YOU WISH TO CHANGE: "
  59. 1350  VTAB 17: HTAB 17: GET I
  60. 1360  ON I GOTO 1410,1420,1430,1440,1450,1460
  61. 1370  GOTO 1340
  62. 1410  PRINT : PRINT "ENTER EXERCISE PRICE: ": INPUT E
  63. 1411  GOTO 210
  64. 1420  PRINT : PRINT "ENTER STOCK PRICE: ": INPUT STK(3)
  65. 1421  GOTO 210
  66. 1430  PRINT : PRINT "ENTER TIME TO MATURITY 1:": INPUT TIME(1)
  67. 1431  GOTO 210
  68. 1440  PRINT : PRINT "ENTER TIME TO MATURITY 2: ": INPUT TIME(2)
  69. 1441  GOTO 210
  70. 1450  PRINT : PRINT "ENTER STD. DEV.: ": INPUT STD
  71. 1455  GOTO 210
  72. 1460  PRINT : PRINT "ENTER INTEREST RATE: ": INPUT R
  73. 1461  GOTO 210
  74. 4000  REM  BLACK-SCHOLES ROUTINE
  75. 4010 D1 = ( LOG(S/E) +(R +.5 *VAR) *T)/ SQR(VAR *T)
  76. 4020 D2 = D1 - SQR(VAR *T)
  77. 4021  REM  CUM NORMAL DEFINED FOR POSITIVE X ONLY
  78. 4022  IF D1 <0 GOTO 4035
  79. 4030 X = D1: GOSUB 7000:N1 = N
  80. 4031  GOTO 4038
  81. 4035 X =  ABS(D1): GOSUB 7000:N1 = 1 -N
  82. 4038  IF D2 <0 GOTO 4045
  83. 4040 X = D2: GOSUB 7000:N2 = N
  84. 4041  GOTO 4050
  85. 4045 X =  ABS(D2): GOSUB 7000:N2 = 1 -N
  86. 4050 OPT = S *N1 -E *N2 * EXP( -R *T)
  87. 4060 H = N1
  88. 4070  RETURN 
  89. 7000  REM  CUM NORMAL APPROX.     ABROMOWITZ AND STEGUN       26.2.19
  90. 7010 C1 = .0498673470
  91. 7020 C2 = .0211410061
  92. 7030 C3 = .0032776263
  93. 7040 C4 = .0000380036
  94. 7050 C5 = .0000488906
  95. 7060 C6 = .0000053830
  96. 7070 N = 1 -.5 *(1 +C1 *X +C2 *X ^2 +C3 *X ^3 +C4 *X ^4 +C5 *X ^5 +C6 *X ^6) ^ -16
  97. 7080  RETURN 
  98. 8000  PRINT : PRINT : INPUT "NUMBER OF OBSERVATIONS: ";NUM
  99. 8010  INPUT "PERIODICITY OF DATA (I.E. WEEKLY DATA   IS 52 ): ";PERIOD
  100. 8015  PRINT 
  101. 8020 SS = 0:MM = 0
  102. 8025  PRINT "INPUT STOCK PRICE FOR PERIOD 1": INPUT P1
  103. 8030  FOR I = 2 TO NUM
  104. 8040  PRINT "INPUT STOCK PRICE FOR PERIOD ";I: INPUT P2
  105. 8045 R(I) =  LOG(P2/P1)
  106. 8047 P1 = P2
  107. 8050 MM = MM +R(I)/(NUM -1)
  108. 8060  NEXT I
  109. 8070  FOR I = 1 TO (NUM -1)
  110. 8080 SS = SS +((R(I) -MM) ^2)/(NUM -1)
  111. 8090  NEXT I
  112. 8095 SS =  SQR(SS *PERIOD)
  113. 8100  PRINT : PRINT : PRINT "STANDARD DEVIATION= ";SS
  114. 8150  RETURN